﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PlutoStudio.Domain.Entities.Auditing
{
    public interface ICreationAudited<TUserKey> : IHasCreationTime where TUserKey : struct
    {
        /// <summary>
        /// Id of the creator user of this entity.
        /// </summary>
        TUserKey? CreatorUserId { get; set; }

    }

    public interface ICreationAudited : ICreationAudited<int>
    {

    }

    public interface ICreationAudited<TUser, TUserKey> : ICreationAudited<TUserKey> where TUserKey : struct where TUser : IEntity<TUserKey>
    {
        TUser CreatorUser { get; set; }
    }
}
